package service

import (
	"fmt"
	"github.com/go-vgo/robotgo"
	"time"

	"auto-type-key/util"
)

var (
	L = util.Lg

	command = "shift"
)

func Run() {
	timer := time.NewTicker(time.Second)
	for {
		select {
		case <-timer.C:
			L.Info(fmt.Sprintf("---> %v ,auto type", command))
			robotgo.KeyTap(command)
		}
	}
}

/**
模拟按下键盘
*/
func typeKey() {
	// 模拟按下1个健，打开开始菜单
	robotgo.KeyTap("command")
	// 模拟按下2个健，打开资源管理器 （win+e）
	robotgo.KeyTap("e", "command")
	// 模拟按下3个健，打开任务管理器
	robotgo.KeyTap("esc", "control", "command")

}

/**
模拟光标的位置移动
*/
func typeMouse() {
	// 获取鼠标的位置 x y
	x, y := robotgo.GetMousePos()
	L.Info(fmt.Sprintf("X:%d,Y:%d", x, y))

	// 向上滚动：3行
	robotgo.ScrollMouse(3, `up`)
	// 向下滚动：2行
	robotgo.ScrollMouse(2, `down`)

	// 按下鼠标左键
	// 第1个参数：left(左键) / center(中键，即：滚轮) / right(右键)
	// 第2个参数：是否双击
	robotgo.MouseClick(`left`, false)

	// 按住鼠标左键
	robotgo.MouseToggle(`down`, `left`)
	// 解除按住鼠标左键
	robotgo.MouseToggle(`up`, `left`)

	//------------------------
	// 将鼠标移动到屏幕 x:800 y:400 的位置（闪现到指定位置）
	robotgo.MoveMouse(800, 400)

	// 将鼠标移动到屏幕 x:800 y:400 的位置（模仿人类操作）
	robotgo.MoveMouseSmooth(800, 400)

	// 将鼠标移动到屏幕 x:800 y:400 的位置（模仿人类操作）
	// 第3个参数：纵坐标x 的延迟到达时间
	// 第4个参数：横坐标y 的延迟到达时间
	robotgo.MoveMouseSmooth(800, 400, 20.0, 200.0)

	// 移动鼠标到 x:800 y:400 后，双击鼠标左键
	robotgo.MoveClick(800, 400, `left`, true)
}
